package com.xdcplus.web.service;

import com.xdcplus.mp.service.BaseService;
import com.xdcplus.pager.vo.PageVO;
import com.xdcplus.web.common.pojo.entity.ToolProductionLineMain;
import com.xdcplus.web.common.pojo.dto.ToolProductionLineMainDTO;
import com.xdcplus.web.common.pojo.dto.ToolProductionLineMainFilterDTO;
import com.xdcplus.web.common.pojo.vo.*;

import java.util.List;


/**
 * (ToolProductionLineMain)表服务接口层
 *
 * @author Man.Chen
 * @since 2024-12-03 16:38:52
 */
public interface ToolProductionLineMainService extends BaseService<ToolProductionLineMain, ToolProductionLineMain, ToolProductionLineMainVO> {

    /**
     * 添加(ToolProductionLineMain)
     *
     * @param toolProductionLineMainDTO (ToolProductionLineMainDTO)
     * @return {@link Boolean} 是否成功
     */
    Long saveToolProductionLineMain(ToolProductionLineMainDTO toolProductionLineMainDTO);

    /**
     * 修改(ToolProductionLineMain)
     *
     * @param toolProductionLineMainDTO (ToolProductionLineMainDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean updateToolProductionLineMain(ToolProductionLineMainDTO toolProductionLineMainDTO);

    /**
     * 批量保存或更新(ToolProductionLineMain)
     *
     * @param toolProductionLineMainList (ToolProductionLineMainList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatch(List<ToolProductionLineMain> toolProductionLineMainList);

    /**
     * 批量保存或更新(ToolProductionLineMainDTOList)
     *
     * @param toolProductionLineMainDTOList (ToolProductionLineMainDTOList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatchByDTOList(List<ToolProductionLineMainDTO> toolProductionLineMainDTOList);

    /**
     * 删除(ToolProductionLineMain)
     *
     * @param id (ToolProductionLineMain)主键
     * @return {@link Boolean} 是否成功
     */
    Boolean deleteToolProductionLineMainLogical(Long id);
    
    Boolean deleteToolProductionLineMainByIds(String ids);

    /**
     * 查询(ToolProductionLineMain)
     *
     * @param toolProductionLineMainFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<ToolProductionLineMainVO>} 状态信息
     */
    List<ToolProductionLineMainVO> queryToolProductionLineMainVOList(ToolProductionLineMainFilterDTO toolProductionLineMainFilterDTO);

    /**
     * 查询(ToolProductionLineMain)
     *
     * @param toolProductionLineMainFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<ToolProductionLineMainVO>} 状态信息
     */
    PageVO<ToolProductionLineMainVO> queryToolProductionLineMain(ToolProductionLineMainFilterDTO toolProductionLineMainFilterDTO);

    /**
     * 查询一个
     *
     * @param id (ToolProductionLineMain)主键
     * @return {@link ToolProductionLineMainVO} (ToolProductionLineMain)信息
     */
    ToolProductionLineMainVO queryToolProductionLineMainById(Long id);

    Long addProductionLine(ToolProductionLineMainVO productionLineMainVO);

    List<ToolProductionLineMainVO> findProductionLine(ToolProductionLineMainDTO toolProductionLineMainDTO);

    void updateProductionLineById(ToolProductionLineMainVO toolProductionLineMainVO);

    void deleteProductionLineById(Long id);

    List<ToolProductionDataItemVO> queryLineSpcData(Long id);

    List<ToolProductionDataVO> queryLineSpcControlChart(ToolProductionControlVO toolProductionControlVO);

    PageVO<CraftCheckOrderTargetVO> queryLineOrderTargetList(Long id);

    PageVO<CraftCheckOrderItemsVO> queryLineCraftCheckOrderItems(Long id);

    ToolProductionDjAndSpcVO queryLineCraftCheckOrderItemsAndSpc(Long id);

    ToolDmIvSummaryVO queryElectricityPerformanceReport(Long id);

    void updateProductionLineByIdAndStatus(Long id, Long status);
}
